package com.wf.demo.sys.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.wf.demo.info.pojo.Company;
import lombok.Data;
import lombok.ToString;

import javax.persistence.*;
import java.awt.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/**
 * 角色
 * @author lx
 */
@Data
@Entity
@Table(name = "sys_role")
@JsonIgnoreProperties({ "handler","hibernateLazyInitializer" })
public class Role {
	private static final long serialVersionUID = 1L;
	
	/**
	 * 角色ID
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id")
	private Long id;

	/**
	 * 角色名称
	 */

	private String roleName;

	/**
	 * 备注
	 */
	private String remark;



	//懒加载。在ORM中，其为了提升性能使用了Lazy加载，就是在使用的时候，才会加载额外的数据，
	// 故导致了在使用之时再加载数据之时， session失效的问题出现。所以问题的目标点实现提前加载数据。
	@ManyToMany(fetch=FetchType.EAGER)
	@JoinTable(name="SysRoleMenu",
			joinColumns= {@JoinColumn(name="rid", referencedColumnName="id")},
			inverseJoinColumns= {@JoinColumn(name="mid", referencedColumnName="id")})
	private List<Menu> menuList;
	/**
	 * 创建时间
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime createTime;


}
